package reflect;

import java.io.File;
import java.lang.reflect.Field;
/**
 * 使用反射机制操作属性
 *
 * 这个操作使用较少，因为按照编码规范，属性通常私有化，并提供公开的get和set方法，并
 * 使用这些方法来操作属性。
 */
public class ReflectDemo8 {
    public static void main(String[] args) throws Exception {
        Teacher t =new Teacher();
        t.name="光头强";
        t.age=12;
        System.out.println(t);

        Class cls = Class.forName("reflect.Teacher");
        Object obj = cls.newInstance();

        /*
            Field 属性对象，反射对象之一
            它的每一个实例用于表示一个属性信息
         */
        //为name设置值
        //1获取name属性
        Field field = cls.getField("name");
        //t.name = "范传奇";
        field.set(obj,"范传奇");//obj.name="范传奇";

        Field field1 = cls.getField("age");
        field1.set(obj,20);

        System.out.println(obj);

        //获取属性值
        Object v = field.get(obj);
        System.out.println(v);
        System.out.println(field1.get(obj));


    }

}
